package com.idega.util;
import java.io.File;
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
public class SendMail {
public SendMail() {
}
public static void send(String from, String to, String cc, String bcc, String host, String subject, String text, File attachedFile)
throws MessagingException {
// Start a session
java.util.Properties properties = System.getProperties();
Session session = Session.getInstance(properties, null);
// Construct a message
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(from));
to = to.replace(';', ',');
message.addRecipients(Message.RecipientType.TO, InternetAddress.parse(to));
//process cc and bcc
//this Address[] ccAddressess = InternetAddress.parse(cc); or similar
if ((cc != null) && !("".equals(cc))) {
cc = cc.replace(';', ',');
message.addRecipients(Message.RecipientType.CC, InternetAddress.parse(cc));
}
if ((bcc != null) && !("".equals(bcc))) {
bcc = bcc.replace(';', ',');
message.addRecipients(Message.RecipientType.BCC, InternetAddress.parse(bcc));
}
/** @todo tryggvi laga */
/*
message.setSubject(parseCharacters(subject));
message.setText(parseCharacters(text));
*/
message.setSubject((subject));
if (attachedFile == null) {
message.setText((text));
}
else {
BodyPart body = new MimeBodyPart();
body.setText(text);
BodyPart attachment = new MimeBodyPart();
DataSource attachmentSource = new FileDataSource(attachedFile);
DataHandler attachmentHandler = new DataHandler(attachmentSource);
attachment.setDataHandler(attachmentHandler);
attachment.setFileName(attachedFile.getName());
attachment.setDescription("Attached file");
MimeMultipart multipart = new MimeMultipart();
multipart.addBodyPart(body);
System.out.println("Adding attachment " + attachment);
multipart.addBodyPart(attachment);
message.setContent(multipart);
}
//Connect to the transport
Transport transport = session.getTransport("smtp");
transport.connect(host, "", "");
//Send the message and close the connection
transport.sendMessage(message, message.getAllRecipients());
transport.close();
}
public static void send(String from, String to, String cc, String bcc, String host, String subject, String text)
throws MessagingException {
send(from, to, cc, bcc, host, subject, text, null);
}
/*private static String parseCharacters(String input){
StringBuffer returnBuffer = new StringBuffer();
char[] charArray = input.toCharArray();
for (int i = 0; i < charArray.length; i++) {
char ch = charArray[i];
char newChar = ch;
switch (ch) {
case 'a':
returnBuffer.append('a');
case 'b':
returnBuffer.append('b');
default:
returnBuffer.append(ch);
}
}
return returnBuffer.toString();
}*/
private static String parseCharacters(String input) {
return convertStringBody(input);
}
/**
* From 2M Business Applications DK
*/
private static String convertStringBody(String tekst) {
while (tekst.indexOf("�") > -1) {
tekst = replace(tekst, "�", "Æ");
}
while (tekst.indexOf("�") > -1) {
tekst = replace(tekst, "�", "æ");
}
while (tekst.indexOf(System.getProperty("line.separator")) > -1) {
tekst = replace(tekst, System.getProperty("line.separator"), "<br>");
}
return tekst;
}
private static String replace(String tekst, String changeFrom, String changeTo) {
String tekst1 = tekst.substring(0, tekst.indexOf(changeFrom));
String tekst2 = tekst.substring(tekst.indexOf(changeFrom) + 1);
return tekst1 + changeTo + tekst2;
}
}